from qiniu import Auth, put_data, BucketManager


def upload_img(data):
    # 上传二进制数据到七牛云,
    # :param data: 二进制数据
    # : return
    # 需要填写你的 Access Key 和 Secret Key
    access_key = 'DJXS8iQVWj0VnYy7vBiTjQ9DHOrpyje3WVtI7OBF'
    secret_key = 'tcQyIz1ORV1whBG111jKBPZtz2O41zcOZ9RUce3J'

    # 构建鉴权对象
    q = Auth(access_key, secret_key)

    # 要上传的空间名称
    bucket_name = 'meiduo45'

    # 上传后保存的文件名
    # 如果不指定保存的文件名称，七牛云会自动生成一个唯一的图片名称
    # 哈希值
    key = None

    # 生成上传 Token，可以指定过期时间等 3600单位是s
    token = q.upload_token(bucket_name, key)

    # 要上传文件的本地路径
    # 将图片二进制数据上传到七牛云
    ret, info = put_data(token, key, data)

    # print(ret)
    # print(info)
    if info.status_code == 200:
        # 上传图片成功
        # 拼接完整url地址
        full_url = 'http://qnwl06oex.hn-bkt.clouddn.com/' + ret["key"]
        return full_url
    else:
        # 封装好的工具类异常需要抛出，不能私自解决异常 否则外界调用遇到异常没法解决
        return None


def deletes(data):
    access_key = 'DJXS8iQVWj0VnYy7vBiTjQ9DHOrpyje3WVtI7OBF'
    secret_key = 'tcQyIz1ORV1whBG111jKBPZtz2O41zcOZ9RUce3J'
    # 初始化Auth状态
    q = Auth(access_key, secret_key)
    # 初始化BucketManager
    bucket = BucketManager(q)
    # 你要测试的空间， 并且这个key在你空间中存在
    bucket_name = 'meiduo45'
    key = data.split('/', -1)[-1]
    # 删除bucket_name 中的文件 key
    ret, info = bucket.delete(bucket_name, key)


if __name__ == '__main__':
    # with app.app_context(): #若要测试就打开这一行
    with open('/home/ubuntu/Picture/Wallpapers/134850-1510811330674f.jpg', 'rb') as f:
        data = f.read()
        full_url = upload_img(data)
        print(full_url)
